#if !defined(FAKE_D3D10_QUERY_H)
#define FAKE_D3D10_QUERY_H

#include <d3d10.h>
#include "Fakes/FakeD3D10Asynchronous.h"
#include <rt/Exceptions/NotImplementedException.h>

class FakeD3D10Query : public ID3D10Query
{
public:
	FakeD3D10Query()
		: Asynchronous()
	{ }

	CONTAIN_ASYNCHRONOUS(Asynchronous)

	virtual void STDMETHODCALLTYPE GetDesc(D3D10_QUERY_DESC *pDesc) { throw rt::NotImplementedException(); }
};

#define CONTAIN_QUERY(member_) \
	CONTAIN_ASYNCHRONOUS(Asynchronous) \
 	FakeD3D10Query member_; \
	virtual void STDMETHODCALLTYPE GetDesc(D3D10_QUERY_DESC *pDesc) { return member_.GetDesc(pDesc); }

#endif
